\documentclass[a4 paper,12 pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[french]{babel}
\usepackage{subfig}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{shapepar}
\usepackage{epstopdf}
\usepackage{tabularx}
\usepackage{url}
\usepackage{qtree}
\usepackage{listings}
\usepackage{algpseudocode}
\usepackage{eurosym}
\usepackage{array}
\usepackage[table]{xcolor}
\usepackage{wasysym}
\usepackage{rotating}
\usepackage{multirow} 
\usepackage{algorithm}  

\newcolumntype{C}{>{\centering\arraybackslash}X}
\DeclareGraphicsExtensions{.eps}



\begin{document}
\lstset{language=C}

\newcommand{\firstquestion}[1]{\begin{samepage} \indent\textbf{#1} \par \vspace{0.3cm}\end{samepage}}
\newcommand{\question}[1]{\vspace{0.5cm} \begin{samepage}\indent\textbf{#1} \par \vspace{0.3cm}\end{samepage}}
\newcommand{\astar}{A$^{\star}$ }

\begin{center}
 \vspace*{-2cm}

May 2012\\Academic year 2011-2012\\\vspace*{1cm}
% Upper part of the page
\includegraphics[width=0.15\textwidth]{images/logo-epl.png}\\[1cm]
 
	\textsc{\LARGE École Polytechnique de Louvain}\\[1.5cm]
 
%\textsc{\Large \texttt{FSAB1202 - FSAB1301 - FSAB1502}\\APP Interdisciplinaire - Rapport}\\[0.5cm]
 
 
% Title
\vspace{1.5cm}
{\begin{large} \texttt{INGI2132} \end{large}\\ \vspace{0.8cm}\huge{Partie 3 \\ \vspace{0.5cm} Fanta - Interpréteur}}\\[0.4cm]
 
\vspace{6.5cm}
 
% Author and supervisor

\begin{minipage}{0.5\textwidth}
\begin{flushright} \large
\emph{Student :} \\ % Par ordre alphabétique :)
Sébastien \textsc{De Wolf}\\
Thoralf \textsc{Gutierrez}\\
Jérémie \textsc{Hambÿe}
\end{flushright}
\end{minipage}

\end{center}

\newpage

\subsection*{Lexer}
\textit{Le code de cette partie du programme est dans le fichier lexer/Lexer.java}\\

Le principe du Lexer est le suivant: il analyse le code source d'un programme donné et assigne un Token à chacun de ses éléments. Un Token contient deux données : le symbole (String) de l'élément et l'id du terminal (pour les feuilles de l'arbre) associé au type de token.\\

Le produit du Lexer est utilisé dans le Parser.\\


\subsection*{Parser}
\textit{Le code de cette partie du programme est dans le fichier parser/Parser.java}\\

Le Parser est utilisé pour créer un arbre syntaxique. Il s'agit d'un arbre qui décrit le programme donné en un ensemble de règles (pour arriver des non-terminaux aux terminaux) et de données (associées aux terminaux). C'est également le Parser qui vérifie la bonne syntaxe d'un programme (parenthèsage, blocs écrits correctement, etc.). Le Parser se sert de la \textit{parse table} fournie par \texttt{GTools}.\\

L'arbre syntaxique est ensuite traduit en arbre syntaxique abstrait.\\

\subsection*{Traducteur vers AST}
\textit{Le code de cette partie du programme est dans le fichier parser/ST2AST.java}\\

Cette partie permet de traduire un arbre constitué de règles et de symbole en un arbre syntaxique abstrait du langage Fanta. Cet arbre abstrait peut ensuite être exécuté et fournira le résultat du programme donné dans l'entrée standard.\\

\subsection*{Point d'entrée}
Le programme est utilisé via un script de compilation simple qui prend en entrée un nom de fichier contenant le code source d'un programme écrit dans le langage Fanta.



\end{document}